Skip to content

Conversation

@paoloricciuti
Copy link
Member

Sprouted from this bsky conversation

It could be quirky to debug such things so I think a warning could be nice if you have a Rest element or an Identifier as the declarator of $props AND don't have a props option for customElementOptions.

I've added three test that maybe is too much but wanted to capture all three scenarios.

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.
  • If this PR changes code within packages/svelte/src, add a changeset (npx changeset).

Tests and linting

  • Run the tests with pnpm test and lint the project with pnpm lint

@changeset-bot
Copy link

changeset-bot bot commented May 26, 2025

🦋 Changeset detected

Latest commit: 9c4db99

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@svelte-docs-bot
Copy link

@github-actions
Copy link
Contributor

Playground

pnpm add https://pkg.pr.new/svelte@16003

@paoloricciuti paoloricciuti merged commit 37488fa into main May 27, 2025
13 checks passed
@paoloricciuti paoloricciuti deleted the warning-props-identifier-custom-element branch May 27, 2025 13:02
@github-actions github-actions bot mentioned this pull request May 27, 2025
@JetLua
Copy link

JetLua commented May 27, 2025

<!-- A.svelte -->
<svelte:options customElement={{
  tag: 'a-btn',
  props: {
    name: {type: 'String'},
  }
}}/>

<script lang="ts">
  import B from './B.svelte'
  const props: {name: string} = $props()

</script>

<B name={props.name}/>
<!-- B.svelte -->

<script lang="ts">
  const props: {name: string} = $props()
</script>

<button>{props.name}</button>

Perhaps a trigger warning shouldn't be issued for file B.svelte.

https://stackblitz.com/edit/vitejs-vite-1tpdpcqa?file=src%2FB.svelte

image

@Rich-Harris
Copy link
Member

Please open a new issue, comments on merged PRs will get lost

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants